112 PRINT #1," I had three objectives while writing this program:"
113 PRINT #1,"a) to introduce an IBM PC to my 5.5 year old son in an easy way,"
114 PRINT #1,"b) to make learning reading and writing more fun for him,"
115 PRINT #1,"c) to have him profitably employed for short times during weekends."
116 PRINT #1," Since he has been first shown the program he learnt to read and"
117 PRINT #1,"write quite decently. Though I can't ascribe his progress solely to the"
118 PRINT #1,"availability of the program or any other software, he has learnt much"
119 PRINT #1,"using it. A good indication to this is that the words he learnt through"
120 PRINT #1,"the program he recognizes much faster and with less effort than any other."
121 PRINT #1,"He also spends more time with the computer than I have expected, knows to"
122 PRINT #1,"write short programs, i.e. drawing squares, is not unaware of the existence"
123 PRINT #1,"of variables, and has a general understanding that a computer is a machine"
124 PRINT #1,"that is made to obey human commands, while a human is to learn the commands"
125 PRINT #1,"a computer is capable to understand.
126 PRINT #1," Perhaps the program resembles the well-known turtle graphics, though"
127 PRINT #1,"it is much simpler and supports just few features of a programming language."
128 PRINT #1,"On the other hand, it is probably easier to use and more intertaining for"
129 PRINT #1,"younger children.":GOSUB 503
130 PRINT #1," The program consists of directories upon entering which a menu is displayed"
131 PRINT #1,"showing what kind of commands are acceptable in a particular directory."
132 PRINT #1,"All other commands will be ignored without any harm. The program lets one"
133 PRINT #1,"draw, paint, sketch etc. in IBM PC medium graphic resolution, though I for one"
134 PRINT #1,"do not conceive it as a drawing tool. It allows also writing programs or rather macros, to automate drawing procedure and to simplify it. The command names"
135 PRINT #1,"are to be written in full. However they can be shorthanded by writing macros."
136 PRINT #1,"This will be explained shortly. Thus unless a child acquired some knowledge"
137 PRINT #1,"of the program he is forced to type full words which makes him to memorize"
138 PRINT #1,"them."
139 PRINT #1," The names I used to identify the commands are to a great extent arbitrary."
140 PRINT #1,"And I am not at all sure that I chose the most suitable. In this respect I"
141 PRINT #1,"counted on implicit hints from my son. However he conceives the program as a"
142 PRINT #1,"part of the computer without crediting me with writing it. And as a consequence"
143 PRINT #1,"of his attitude I was unable to elicit from him the more appropriate wording."
144 PRINT #1,"Giving a command means typing it and pressing Enter key. Each command normally":PRINT #1,"consists of a single word with the exception of a few in the draw, change"
145 PRINT #1,"picture, and program directories which can consist of two words."
146 PRINT #1,"Next I shall describe commands available in each directory.":GOSUB 503
160 PRINT #1,"==================== The draw menu =================="
161 PRINT #1,"":PRINT #1,""
162 PRINT #1,"left - turns arrow left and then steps one step forward"
163 PRINT #1,"right - turns arrow right and then steps one step forward"
164 PRINT #1,"ahead - one step forward"
165 PRINT #1,"back - turns arrow back and steps one step forward"
166 PRINT #1,"turn - turns arrow through 45 degrees counterclockwise and steps one step":PRINT #1," forward"
167 PRINT #1,"up - when up is on the arrow moves without drawing, up is in reverse video":PRINT #1," in the menu. Does not effect line or circle commands."
168 PRINT #1,"down - when down is on the arrow draws while moving, draw is in reverse":PRINT #1," in the menu. Does not effect line or circle commands."
169 PRINT #1,"center - stores current arrow location as the center of future circles"
170 PRINT #1,"circle - draws a circle with a stored center through the current arrow location"
171 PRINT #1,"line - stores current arrow location as a first endpoint of a line"
172 PRINT #1,"end - draws a line between the stored and current arrow locations"
173 PRINT #1,"erase - makes arrow to draw in the background color while moving thus":PRINT #1," effectively erasing whatever it passes over":GOSUB 503
174 PRINT #1,"box - used as a first step in sprite generation. Stores a corner of":PRINT #1," a rectangle"
175 PRINT #1,"fix - uses the current arrow position as the opposite corner of a":PRINT #1," rectangular sprite. Makes the content of the rectangle a sprite."
176 PRINT #1,"put - puts a sprite with its upper left corner at the current arrow":PRINT #1," position. Uses XOR option of the PC BASIC put command"
177 PRINT #1,"sprite - go to the sprite directory"
178 PRINT #1,"program - go to the program directory"
179 PRINT #1,"var - display the current content of the ten elligible variables:":PRINT #1," var0, var1, ..., var8, var9. Press Enter key to remove the display"
180 PRINT #1,"var#= - defines an assignment statement which must be in one of the forms:"
181 PRINT #1," var0=3 or var7=-20"
182 PRINT #1," var4=var2-var1 or var8=var2*5
183 PRINT #1," in other words a variable can be assigned a value given explicitly":PRINT #1," or stored in another variable or computed as a result of a simple"
184 PRINT #1," arithmetic axpressions consisting of two opperands each of which"
185 PRINT #1," must be an elligible variable or a constant number"
186 PRINT #1,"status - displays current values of some parameters like step, colors and etc":PRINT #1," Use space bar to cycle through the display and Enter key to":PRINT #1," remove it"
187 PRINT #1,"quit - returns to main menu":GOSUB 503
188 PRINT #1,"":PRINT #1,"Remark:"
189 PRINT #1," Commands left,right,turn,ahead,back can be given as two word"
190 PRINT #1," commands, the second word being either a var#, where # changes from"
191 PRINT #1," 0 through 9, or just a constant number. The command will then be"
192 PRINT #1," executed the corresponding number of times."
193 PRINT #1," For example,"
194 PRINT #1," left 4"
195 PRINT #1," draws a square whose side is equal to the current step and returns"
196 PRINT #1," arrow to the original position. The same applies to all macros, i.e."
197 PRINT #1," if pr is a program, then typing in "
198 PRINT #1," pr var7"
199 PRINT #1," will result in the macro pr being executed the number of times equal to"
200 PRINT #1," the content of var7. If var7=0 nothing will happen. On the other hand,"
201 PRINT #1," pr"
202 PRINT #1," is equivalent to typing"
203 PRINT #1," pr 1"
204 PRINT #1," There must be a blank between two words. If the second word is a "
205 PRINT #1," var# then there must be only one blank. Number of blanks can be"
206 PRINT #1," arbitrary if the second word is just a constant number.":GOSUB 503
260 PRINT #1,"============ The picture menu ============================
261 PRINT #1,""
262 PRINT #1,"save - save a picture to a disk. If the name was not defined via 'name'"
263 PRINT #1," command the computer will inquire about the name.": PRINT #1," It always gives the extention .PIC to the file name."
264 PRINT #1,"load - loads a picture from a disk. The current content of the video"
265 PRINT #1," memory is replaced and thus lost. The computer inquires about the"
266 PRINT #1," name of a file a picture is stored on if the name was not defined"
267 PRINT #1," via 'name' command."
268 PRINT #1,"name - gives name to the current content of the screen. Should include"
269 PRINT #1," drive specification, if this is different from the default."
270 PRINT #1,"screen - displays the entire screen. Its copy is automatically stored in an"
271 PRINT #1," array. This can be used in conjunction with 'undo' command from the"
272 PRINT #1," change directory. Before performing a risky operation like filling,"
273 PRINT #1," have a look at your creation through the 'screen' command to make"
274 PRINT #1," sure you'll see it again."
275 PRINT #1,"program - as usual
276 PRINT #1,"print - dumps out the screen. I acknowledge a hint for dumping the screen"
277 PRINT #1," I found in the October 1985 issue of PC MAGAZINE. Do not forget":PRINT #1," to give GRAPHICS.COM command before running the program.":PRINT #1," Best of all create an AUTOEXEC.BAT file to do this"
278 PRINT #1,"frame - the final version of the picture can appear with or without a frame."
279 PRINT #1," 'frame' is a toggle switch. When the frame is attached the word"
280 PRINT #1," frame in the menu appears in reverse video."
281 PRINT #1,"files - models the BASIC FILES command. Use files,or files b."
282 PRINT #1,"quit - returns to the main menu"
283 PRINT #1,"":PRINT #1,""
284 PRINT #1,"================= The program menu =========================
285 PRINT #1,""
286 PRINT #1,"create - lets one write a macro. Separate differnt commands with a comma."
287 PRINT #1," This apart, all commands are typed exactly the way they are typed in"
288 PRINT #1," in the immediate mode. Press Enter key only once: when the program"
289 PRINT #1," has been successfully or unsuccessfully typed in. Pressing Enter"
290 PRINT #1," key terminates the 'create' mode. If necessary you will be able to"
291 PRINT #1," modify your macro later with the 'modify' command.
292 PRINT #1,"delete - deletes a macro from the list of macros"
293 PRINT #1,"modify - edits macros using Ins and Del keys. Move the cursor using the"
294 PRINT #1," cursor keys. If your macro is too long to be displayed on a single"
295 PRINT #1," line move the cursor to the rightmost position and watch as the macro"
296 PRINT #1," slides to the left till you find the portion of it you want to"
297 PRINT #1," modify"
298 PRINT #1,"list - lists all available macros. Maximum number of macros is 120"
299 PRINT #1,"display - displays a macro. Use the space bar to cycle through a macro that"
300 PRINT #1," is more than 39 characters long. Commas included."
301 PRINT #1,"rename - renames a macro."
302 PRINT #1,"store - stores all available macros to a file DATA.SUB. The existing file"
303 PRINT #1," with the same name is destroyed."
304 PRINT #1,"append - appends currently used macros to a file DATA.SUB if the latter"
305 PRINT #1," exists. Otherwise acts as the 'store' command."
306 PRINT #1,"get - retrieves the content of the file DATA.SUB"
307 PRINT #1,"key - lets one to redefine the ten function keys"
308 PRINT #1,"quit - returns to the directory from which 'program' was envoked":GOSUB 503
309 PRINT #1,""
310 PRINT #1,"Remark:"
311 PRINT #1," All commands in this directory communicate with the user. One must"
312 PRINT #1," carefully answer questions when asked. To exit a command press Enter."
313 PRINT #1," For reasons that will become clear later (sect. General remarks and"
314 PRINT #1," examples) it is unwise though to redefine F10."
315 PRINT #1," It is possible to effect two-word commands, e.g."
316 PRINT #1," modify pr, or delete pr, or display pr, etc."
317 PRINT #1,"":NLINES=4:GOSUB 503:NLINES=0
318 PRINT #1,"============== The sprite menu =========================
319 PRINT #1,""
320 PRINT #1,"move - moves a sprite. A sprite must be prepared in the draw directory by"
321 PRINT #1," means of the box-fix sequence. An attempt to move an empty box will"
322 PRINT #1," result in an error message. 'move' is analogue to being up in the "
323 PRINT #1," draw directory: sprite moves without leaving a trace."
324 PRINT #1,"reverse - a toggle switch. Changes sprite to reverse video and back"
325 PRINT #1,"ns-flip - turns sprite around its x-axis: north-to-south"
326 PRINT #1,"ew-flip - turns sprite around its y-axis: east-to-west"
327 PRINT #1,"track - after each step the sprite is XOR-PUT, often creates amusing designs"
328 PRINT #1,"3d - after each step the sprite is pset-PUT, which creates a 3D-effect"
329 PRINT #1,"start - if one wants to change from one of modes (move, track, 3d) to another"
330 PRINT #1," he/she needs just to type in the desired mode. But being already in"
331 PRINT #1," in one of modes in order to activate it one needs to type in 'start'"
332 PRINT #1,"rotate - if sprite is square, rotates it through 90 degrees counterclockwise,
333 PRINT #1," otherwise produces an error message"
334 PRINT #1,"rubber - replaces temporarily sprite by a blank square with visible boundary"
335 PRINT #1," to which all of the above applies. In 3d and track modes has the"
336 PRINT #1," effect of erasing anything it passes over. In the move mode has no"
337 PRINT #1," effect at all"
338 PRINT #1,"quit - returns to the draw directory"
339 PRINT #1,"":PRINT #1,"":GOSUB 503
340 PRINT #1,"Remark:"
341 PRINT #1," When one of modes is activated sprite is controled by eight cursor keys."
342 PRINT #1," Its step and therefore speed is controled by '+' and '-' keys. Speed"
343 PRINT #1," can not be negative. If it is 0 sprite would not move. To make it move"
344 PRINT #1," press '+' which will make speed positive"
345 PRINT #1," There is only one box to store a sprite. Using 'rubber' is rather an"
346 PRINT #1," exception. The best way to save sprites is to organize a picture that"
347 PRINT #1," contains many of them. Then each time a particular sprite is needed"
348 PRINT #1," the current picture must be stored on disk, the one with sprites must"
349 PRINT #1," be loaded. After the desired sprite has been put into box swap the "